import { _decorator, Component, Collider2D } from 'cc';
const { ccclass, property } = _decorator;

import { BulletDirection, PlaneCamp } from "../Constant/Constant";
import BulletByEnemyFactory from "../Factory/BulletByEnemyFactory";
import PoolManager from "../Manager/PoolManager";

@ccclass('BulletControl')
export default class BulletControl extends Component {
  @property
  speed: number = 400
  public direction: BulletDirection = BulletDirection.UP
  public from: PlaneCamp = PlaneCamp.PLAYER
//  /**
//   * 初始化函数
//   * @param from 子弹发射方
//   * @param direction 子弹运动方向
//   */
  public init(from: PlaneCamp, direction: BulletDirection, speed: number = 400) {
        // this.from = from
        // this.direction = direction
        // this.speed = 400
  }
  update(dt: number) {
//    // 子弹射击方向
        // if (this.direction == BulletDirection.UP) {
        // this.node.y += this.speed * dt
        // } else if (this.direction == BulletDirection.DOWN) {
        // this.node.y -= this.speed * dt
        // }

//    // 超出屏幕后销毁
        // if (this.node.y > cc.view.getVisibleSize().height + this.node.height ||
        // this.node.y < -this.node.height) {
//      // 回收子弹
//      // PoolManager.instance.putNode(this.node)
        // if (this.from === PlaneCamp.ENEMY) {
        // BulletByEnemyFactory.recycle(this.node)
        // } else {
        // PoolManager.instance.putNode(this.node)
        // }
        // }

  }
//  /**
//   * 当碰撞产生的时候调用
//   * @param  {Collider} other 产生碰撞的另一个碰撞组件
//   * @param  {Collider} self  产生碰撞的自身的碰撞组件
//   */
  onCollisionEnter(other: Collider2D, self: Collider2D): void {
//    // 子弹触发碰撞后自毁
//    // 回收子弹
        // if (this.from === PlaneCamp.ENEMY) {
        // BulletByEnemyFactory.recycle(this.node)
        // } else {
        // PoolManager.instance.putNode(this.node)
        // }
  }
}


/**
 * 注意：已把原脚本注释，由于脚本变动过大，转换的时候可能有遗落，需要自行手动转换
 */
// import { BulletDirection, PlaneCamp } from "../Constant/Constant";
// import BulletByEnemyFactory from "../Factory/BulletByEnemyFactory";
// import PoolManager from "../Manager/PoolManager";
// 
// const { ccclass, property } = cc._decorator;
// 
// @ccclass
// export default class BulletControl extends cc.Component {
// 
//   @property
//   speed: number = 400
// 
//   public direction: BulletDirection = BulletDirection.UP
//   public from: PlaneCamp = PlaneCamp.PLAYER
// 
//   /**
//    * 初始化函数
//    * @param from 子弹发射方
//    * @param direction 子弹运动方向
//    */
//   public init(from: PlaneCamp, direction: BulletDirection, speed: number = 400) {
//     this.from = from
//     this.direction = direction
//     this.speed = 400
//   }
// 
//   update(dt: number) {
//     // 子弹射击方向
//     if (this.direction == BulletDirection.UP) {
//       this.node.y += this.speed * dt
//     } else if (this.direction == BulletDirection.DOWN) {
//       this.node.y -= this.speed * dt
//     }
// 
//     // 超出屏幕后销毁
//     if (this.node.y > cc.view.getVisibleSize().height + this.node.height ||
//       this.node.y < -this.node.height) {
//       // 回收子弹
//       // PoolManager.instance.putNode(this.node)
//       if (this.from === PlaneCamp.ENEMY) {
//         BulletByEnemyFactory.recycle(this.node)
//       } else {
//         PoolManager.instance.putNode(this.node)
//       }
//     }
// 
//   }
// 
//   /**
//    * 当碰撞产生的时候调用
//    * @param  {Collider} other 产生碰撞的另一个碰撞组件
//    * @param  {Collider} self  产生碰撞的自身的碰撞组件
//    */
//   onCollisionEnter(other: cc.Collider, self: cc.Collider): void {
//     // 子弹触发碰撞后自毁
//     // 回收子弹
//     if (this.from === PlaneCamp.ENEMY) {
//       BulletByEnemyFactory.recycle(this.node)
//     } else {
//       PoolManager.instance.putNode(this.node)
//     }
//   }
// }
